package jwj8508.swing.jdbc;

import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

public class J26_SungJukMenu extends JMenuBar {
	
	private JMenu mnFile = null;
	private JMenu mnView = null;
	private JMenu mnHelp = null;
	
	private J26_SungJukActionListener sjal = null;

	public J26_SungJukMenu(JFrame p) {		
		sjal = new J26_SungJukActionListener(p);
		makeMenu();
		makeMenuItem();
		addShortCut();
		addMenu();		
	}
	
	private void makeMenu() {
		mnFile = new JMenu(" 파 일 (F) ");	
		mnView = new JMenu(" 보 기 (V) ");
		mnHelp = new JMenu(" 도움말 (H) ");
	}
	
	// 메뉴 항목에 단축키 지정
	private void addShortCut() {
		mnFile.setMnemonic(KeyEvent.VK_F);
		mnView.setMnemonic(KeyEvent.VK_V);
		mnHelp.setMnemonic(KeyEvent.VK_H);		
	}
	
	// 생성 및 설정된 메뉴를 메뉴바에 추가
	private void addMenu() {
		add(mnFile);
		add(mnView);
		add(mnHelp);
		
	}
	
	private JMenuItem makeMenuItems(String text, String img, int skey, boolean off, int akey) {
		String icon = null;
		if(img != null){
			icon = "/img/menu/" + img + ".png";
		}
		
		JMenuItem mnitem = null;	// 메뉴 항목
		try {
			mnitem = new JMenuItem(text, new ImageIcon(getClass().getResource(icon)));
		} catch (Exception ex) {
			mnitem = new JMenuItem(text);
		}
		
		mnitem.setEnabled(off);	// 메뉴 활성/비활성
		mnitem.setMnemonic(skey);
		mnitem.setAccelerator(KeyStroke.getKeyStroke(akey, ActionEvent.CTRL_MASK));	// 단축키		
		mnitem.addActionListener(sjal);
		mnitem.setActionCommand(img);
				
		return mnitem;
	}
	
	// 메뉴에 메뉴항목 추가
	private void makeMenuItem() {		
		mnFile.add(makeMenuItems(" 새 성적... (N)    ", "new", KeyEvent.VK_N, true, KeyEvent.VK_N));		
		mnFile.addSeparator();
		mnFile.add(makeMenuItems(" 종 료 (X)", "exit", KeyEvent.VK_X, true, KeyEvent.VK_X));

		mnView.add(makeMenuItems(" 전체 성적 보기 (L)    ", "list", KeyEvent.VK_L, true, KeyEvent.VK_L));
		
		mnHelp.add(makeMenuItems(" 도움말 항목 (H)", "help", KeyEvent.VK_H, true, KeyEvent.VK_H));
		mnHelp.addSeparator();
		mnHelp.add(makeMenuItems(" 프로그램 정보 (A)    ", "about", KeyEvent.VK_A, true, KeyEvent.VK_A));
		
	}
}
